#ifndef __SYS_H
#define __SYS_H
#ifdef __cplusplus
extern "C"
{
#endif

#include "stm32l4xx_hal.h"
struct gpio_pin
{
    GPIO_TypeDef *GPIOx;
    uint16_t pin;
};

/**
 * SYS_SUPPORT_OS用于定义系统文件夹是否支持OS
 * 0,不支持OS
 * 1,支持OS
 */
#define SYS_SUPPORT_OS 0

/*---- 函数申明 ----*/

void sys_nvic_set_vector_table(uint32_t baseaddr, uint32_t offset); /* 设置中断偏移量 */
void sys_standby(void);                                             /* 进入待机模式 */
void sys_soft_reset(void);                                          /* 系统软复位 */
void sys_stm32_clock_init(uint32_t plln);                           /* 系统时钟初始化函数 */

/*---- 以下为汇编函数 ----*/
void sys_wfi_set(void);          /* 执行WFI指令 */
void sys_intx_disable(void);     /* 关闭所有中断 */
void sys_intx_enable(void);      /* 开启所有中断 */
void sys_msr_msp(uint32_t addr); /* 设置栈顶地址 */

void SystemClock_Config(void);
void Error_Handler(void);
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line);
#endif

#ifdef __cplusplus
}
#endif
#endif
